package com.aaa.service.scl.impl;

import cn.hutool.core.util.ObjectUtil;
import com.aaa.entity.PageSortEntity;
import com.aaa.entity.scl.TestPlanScl;
import com.aaa.dao.scl.TestPlanSclDao;
import com.aaa.service.scl.TestPlanSclService;
import com.aaa.utils.MyTools;
import com.github.pagehelper.PageHelper;
import lombok.extern.java.Log;
import org.springframework.stereotype.Service;


import javax.annotation.Resource;
import java.util.List;

/**
 * 心理健康SCL计划表(TestPlanScl)表服务实现类
 *
 * @author makejava
 * @since 2022-09-01 21:18:38
 */
@Service("testPlanSclService")
@Log
public class TestPlanSclServiceImpl implements TestPlanSclService {
    @Resource
    private TestPlanSclDao testPlanSclDao;


    @Override
    public List<TestPlanScl> queryAllPlan(TestPlanScl testPlanScl, PageSortEntity pageSortEntity) {
        PageHelper.startPage(pageSortEntity.getPage(), pageSortEntity.getLimit());
        List<TestPlanScl> testPlanSclList = testPlanSclDao.queryAllPlan(testPlanScl);
        return testPlanSclList;
    }

    /**
     * 新增数据
     *
     * @param testPlanScl 实例对象
     * @return 实例对象
     */
    @Override
    public TestPlanScl insert(TestPlanScl testPlanScl) {
        while (true) {
            TestPlanScl testPlanSclNew = new TestPlanScl();
            //此处，生成不重复的随机数，不足6为的前补零
            String sixRandom = MyTools.getSixRandom();
            testPlanSclNew.setTestCode(sixRandom);
            //判断是否跟数据库已经存在的邀请码重复
            List<TestPlanScl> testPlanSclList = testPlanSclDao.queryByAllView(testPlanSclNew);
            log.info("生成的随机数，跟数据库是否一致校验" + sixRandom);
            if (ObjectUtil.isEmpty(testPlanSclList) || testPlanSclList.size() == 0) {
                //退出循环之前，将合法的随机数保存到实体对象中testPlanFpa
                testPlanScl.setTestCode(sixRandom);
                break;
            }
        }
        this.testPlanSclDao.insert(testPlanScl);
        return testPlanScl;
    }

    /**
     * 修改数据
     *
     * @param testPlanScl 实例对象
     * @return 实例对象
     */
    @Override
    public TestPlanScl update(TestPlanScl testPlanScl) {
        int update = testPlanSclDao.update(testPlanScl);
        if (update > 0) {
            return testPlanScl;
        }
        return null;
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Integer id) {
        int i = testPlanSclDao.deleteById(id);
        if (i > 0) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public Integer delTestPlanBatch(int[] id) {
        Integer integer = testPlanSclDao.delTestPlanBatch(id);
        return integer;
    }

    @Override
    public Integer repetitionName(TestPlanScl testPlanScl) {
        Integer integer = testPlanSclDao.repetitionName(testPlanScl);
        return integer;
    }
}
